package java04;
//定义外部类Outer
class Outer {
    int m = 0;

    //外部类成员方法
    public void test1() {
        System.out.println("外部类成员方法！");
    }
    //定义内部类Inner
    class Inner{
    int n = 1;
    //定义内部类方法，访问外部类成员变量和方法
    public void show1() {
        System.out.println("外部成员变量m = " + m);
        test1();
    }

    public void show2() {
        System.out.println("内部类成员方法！");
        }
    }
    //定义外部类方法，访问内部变量和方法
    public void test2(){
        Inner inner = new Inner();
        System.out.println("内部类成员变量n = " + inner.n);
        inner.show2();
    }
}
//定义测试类
public class Test03 {
    public static void main(String[] args){
        Outer outer = new Outer();//创建外部类对象
        Outer.Inner inner = outer.new Inner();//创建内部类对象
        Outer.Inner i = new Outer().new Inner();//创建内部类对象,合并上面两行代码
        inner.show1();//测试在成员内部类中访问外部成员变量和方法
        outer.test2();//测试在外部类中访问内部类变量和方法
    }
}
